Engineering practices in ML
Зачем этот курс?
- Познакомиться с повсеместными проблемами отрасли и их глубиной.
- Узнать их негативное влияние на разных уровнях (разработчик, команда, компания, индустрия).
- Изучить инструменты и практики позволяющие снизить это влияние.
- Поднять уровень компетенций в области ML.
Почему такое название?
Современный data science и machine learning требуют написания большого количества кода. Прошли те дни когда все считалось на бумажках или в экселе. Теперь для разработки ML проектов требуется использование языков программирования общего пользования, библиотек и прочего. Собственно требуется “разработка ПО”. А это область давно и хорошо изучена.
Инженерные практики в разработке ПО
- Test driven development
- Refactoring
- Design Improvement
- Continuous integration - continuous delivery
- Pair programming
- Automated tests
В области разработки ПО уже давно используются различные инженерные практики, общепринятые подходы для развития и увеличения производительности команды разработки ПО. Зачастую они упоминаются в различных agile методологиях, но на самом деле могут существовать отдельно. Применение таких практик позволяет поддерживать хорошее качество кода и архитектуры, быстрее поставлять новые фичи, повышать уровень развития команды. Собственно применение этих практик уже устоявшаяся вещь в индустрии разработки ПО.
Что же с DS/ML?
мы математики, нам это не надо
Зачастую именно так, в области анализа данных и машинного обучения такого нет. Связано это с тем, что в проектах DS/ML идёт исследование, результатом которого может быть подтверждение или опровержение гипотезы. И код не является важным артефактом, так как в дальнейшем не будет использоваться. НО мало кто задумывается, что:
- Исследование должно быть воспроизводимо.
- Во время исследования вы пишите код, а значит что-то разрабатываете.
Поэтому мы соберем и изучим различные практики применимые в DS/ML. Этот курс направлен на то чтобы осветить какие есть проблемы в отрасли и как их можно решить.
Какой план?
- Понимание проблематики
- Организация процесса в команде
- Инструменты воспроизводимости исследований
Собственно каков план на этот курс. Сегодня мы будем разбираться с проблематикой. На следующих занятиях будем затрагивать темы организации процесса в команде и инструменты необходимые для воспроизводимости исследований.
I dont’t like jupyter notebooks1
- скрытые состояния, которые можно забыть или испортить
- возможность запускать код в произвольном порядке
- нет поддержки линтеров, форматеров и автокомплита
- не поддерживают модульность и переиспользование кода
- поощрают написание не тестируемого кода
- приходиться писать смешанный код
- не удобны для версионировании в гите
- нет requirements
Резюме: jupyter notebooks поощряют вредные привычки и плохие процессы, а также препятствуют появлению хороших привычек.